//
//  UIScrollView+Refresh.h
//  Common
//
//  Created by guoshiqing on 2018/6/15.
//  Copyright © 2018年 www.bitkinetic.com. All rights reserved.
//


#import <UIKit/UIKit.h>

#import <MJRefresh/MJRefresh.h>
#import "MJRefreshBackNormalFooter.h"
#import "ERefreshHeader.h"
#import "ERefreshFooter.h"
#import "CTPullRefreshViewProtocol.h"

/**
 MJRefresh 的封装，自动设置下拉刷新、上拉加载更多，状态。默认一次加载20条数据
 1、设置TableView的isUseAutoRefresh会生效 
 2、触发条件是调用 reloadData方法
 */
@interface UIScrollView (Refresh)

+(void)setRefreshHeaderClass:(Class)headerClass footerClass:(Class)footerClass;
/**
 默认是  ERefreshHeader
 */
@property (readonly, nonatomic) id<CTRefreshHeaderProtocol> getHeaderView;
/**
 默认是  ERefreshFooter
 */
@property (readonly, nonatomic) id<CTRefreshFooterProtocol> getFooterView;
/**
 是否使用自动刷新机制
 */
@property (nonatomic, assign) BOOL isUseAutoRefresh;
/**
 第一次调用refresh是否显示下拉动画
 */
@property(nonatomic,assign)NSInteger showPullAnimation;
/**
 是否正在执行头部静默刷新block
 */
@property(nonatomic,assign)BOOL isHeaderExcuting;

/**
 刷新一次请求个数，默认20 
 */
@property (nonatomic, assign) NSInteger refreshDefatultNewRowNum;
/**
 下拉刷新是否出错（要在外部调用）
 */
@property (nonatomic, assign) BOOL isHeaderRefreshError;

#pragma mark - Header方法
//刷新
- (void)addHeaderWithRefreshingBlock:(void (^)(void))block;
- (void)addHeaderWithRefreshingSubHeadClass:(Class )subHeaderClass Block:(void (^)(void))block;//自定义的头部
- (void)addHeaderWithRefreshingTarget:(id)target action:(SEL)action;

//下拉刷新
- (void)headerBeginRefreshing;
- (void)headerBeginRefreshingWithNoPullAnimation;


/**
 是否正在下拉刷新

 @return return value description
 */
- (BOOL)headerIsRefreshing;

/**
 结束下拉刷新
 */
- (void)headerEndRefreshing;

/**
 是否隐藏底部状态栏

 @param hidden hidden description
 */
- (void)headerHidden:(BOOL)hidden;

#pragma mark - Footer方法
/**
 获取更多

 @param block block description
 */
- (void)addFooterWithMoreBlock:(void (^)(void))block;
- (void)addfooterWithMoreTarger:(id)target action:(SEL)action;

//开始加载更多
- (void)footerBeginRefreshing;

/**
 是否正在加载更多

 @return return value description
 */
- (BOOL)footerIsRefreshing;

/**
 结束加载更多
 */
- (void)footerEndRefreshing;
- (void)footerEndRefreshNoMoreDate;

/**
 是否隐藏底部状态栏

 @param hidden hidden description
 */
- (void)footerHidden:(BOOL)hidden;

/**
 停止刷新跟获取更多
 */
- (void)endRefreshAndLoadMore;

/**
 页面是数据条数

 @return return value description
 */
- (NSInteger)totalDataCount;

/**
 页面刷新时间

 @return return value description
 */
- (NSDate*)getRefreshTime;

/**
 隐藏脚，根据内容的高度
 */
- (void)hiddenFootByContentHeight;

/**
 隐藏脚，计算内容高度的时候，会扣除这个值。这个值需要使用者动态修改，
 否则会造成计算不准确
 */
@property (nonatomic,assign)CGFloat placeholderHeight;

/**
 重置脚部的状态
 */
- (void)resetFootStatus;



@end
